package com.bsj.power.pls.service;

import com.bsj.power.common.config.global.JsonResult;
import com.bsj.power.common.def.dto.cardReport.CardReportSearchDTO;
import com.bsj.power.common.def.dto.cardReport.PersonalCardReportDTO;
import com.bsj.power.common.def.vo.pls.BindCardStatisticsVO;
import com.bsj.power.common.def.vo.pls.CardReportVO;
import com.bsj.power.common.def.vo.pls.PersonalCardReportInfoVO;
import com.bsj.power.common.def.vo.pls.excel.CardReportExcelVO;

import java.text.ParseException;
import java.util.List;
import java.util.Map;

/**
 * @author LiJiaXin
 * @version 1.0.0
 * @description CardReportService
 * @time 2024/4/23 20:02
 */
public interface CardReportService {

    /**
     * 智慧领卡报表
     *
     * @param cardReportSearchDTO
     * @return com.bsj.power.common.config.global.JsonResult<java.util.List < com.bsj.power.common.def.vo.pls.CardReportVO>>
     * @author ljx
     * @time 2024/4/23 20:10
     */
    JsonResult<List<CardReportVO>> pageCardReport(CardReportSearchDTO cardReportSearchDTO);

    /**
     * 获取导出数据
     *
     * @param cardReportSearchDTO
     * @return java.util.List<com.bsj.power.common.def.vo.pls.excel.CardReportExcelVO>
     * @author ljx
     * @time 2024/5/10 16:23
     */
    List<CardReportExcelVO> getExportData(CardReportSearchDTO cardReportSearchDTO);

    /**
     * 查询人员的绑卡信息
     *
     * @param dto
     * @return
     */
    List<PersonalCardReportInfoVO> listPersonalCardReportInfo(PersonalCardReportDTO dto);

    /**
     * 绑卡信息相关统计
     *
     * @return com.bsj.power.common.def.vo.pls.BindCardStatisticsVO
     * @author ljx
     * @time 2024/12/18 19:40
     */
    BindCardStatisticsVO statistics();

    /**
     * 绑卡趋势
     *
     * @param startTime
     * @param endTime
     * @param type      1月统计 2日统计
     * @return com.bsj.power.common.config.global.JsonResult<java.util.Map < java.lang.String, java.lang.Long>>
     * @author ljx
     * @time 2024/12/19 16:10
     */
    Map<String, Long> listNumberByTime(String startTime, String endTime, Integer type) throws ParseException;
}
